package fiuba.algo3.algoThieft.modelo;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;

public class Caracteristica {
	
	
	private static HashMap<String,String> oraciones = new HashMap<String,String>();
	private static HashMap<String,ArrayList<String>> valoresValidos = new HashMap<String,ArrayList<String>>();
	
	private String llaveDeCaracteristica;
	private String valorDeLaCaracteristica;
	
	public Caracteristica(String nombreCaracteristica, String caracteristica) throws ErrorValorNoValido {

		Caracteristica.cargarCaracteristicas();
		nombreCaracteristica = nombreCaracteristica.toLowerCase();
		caracteristica = caracteristica.toLowerCase();
		if (! ( Caracteristica.valoresValidos.get(nombreCaracteristica).contains(caracteristica) ) ){
			throw new ErrorValorNoValido();
		}
		this.llaveDeCaracteristica = nombreCaracteristica;
		this.valorDeLaCaracteristica = caracteristica;
		
	}

	

	public String comoString() {
		String cadena = Caracteristica.oraciones.get(this.llaveDeCaracteristica) + this.valorDeLaCaracteristica ;
		return cadena;
	}
	

	private static void cargarCaracteristicas() {
		//solo los carga si no fueron cargados
		if (oraciones.isEmpty()){
			//sexo
			Caracteristica.oraciones.put( "sexo" , "De sexo ");
			ArrayList<String> valores = new ArrayList<String>(Arrays.asList( "masculino" , "femenino" ) );
			Caracteristica.valoresValidos.put( "sexo" , valores );
			//hobby
			Caracteristica.oraciones.put( "hobby" , "Suele hablar mucho de ");
			valores = new ArrayList<String>(Arrays.asList( "tenis"
					, "musica" , "alpinismo", "paracaidismo" , "natacion" , "croquet" ) );
			Caracteristica.valoresValidos.put( "hobby" , valores );
			//cabello
			Caracteristica.oraciones.put( "cabello" , "Tenia el cabello ");
			valores = new ArrayList<String>(Arrays.asList( "castanio"
					, "rubio" , "rojo", "negro" ) );
			Caracteristica.valoresValidos.put( "cabello" , valores );
			//senia
			Caracteristica.oraciones.put( "senia" , "Me llamo la atencion que tenia ");
			valores = new ArrayList<String>(Arrays.asList( "anillo"
					, "tatuaje" , "cicatriz", "joyas" ) );
			Caracteristica.valoresValidos.put( "senia" , valores );
			//vehiculo
			Caracteristica.oraciones.put( "vehiculo" , "Se fue rapidamente en su ");
			valores = new ArrayList<String>(Arrays.asList( "moto"
					, "descapotable" , "limusina", "deportivo" ) );
			Caracteristica.valoresValidos.put( "vehiculo" , valores );

		}
		
	}



	public String getValor() {
		
		return this.valorDeLaCaracteristica;
	}
}
